package yambal.net.google.Blog
{
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	
	import mx.collections.ArrayCollection;
	
	public class Blog
	{
		public var id:String;
		public var published:Date;
		public var updated:Date;
		public var title:String;
		public var summary:String;
		public var author:Author;
		public var categories:ArrayCollection;
		public var postUrl:String;
		public var feedUrl:String;
		public var selfUrl:String;
		public var alternateUrl:String;
		public var templateUrl:String;
		public var settingsUrl:String;
		
		public function Blog()
		{
			
		}
		
		public function set fullId(fullId:String):void{
			this.id = this.getIdFromFullId(fullId);
		}
		
		/**
		 * 
		 **/
		public function requestPost(startIndex:int = -1):void{
			var loader:URLLoader = new URLLoader();
			loader.addEventListener(Event.COMPLETE, this.onRequestAllPost);
			
			var ep:String = "http://www.blogger.com/feeds/" + this.id + "/posts/default";
			var paras:Array = new Array();
			if(startIndex > 0){
				paras.push("start-index=" + startIndex);
			}
			
			//http://www.rcdtokyo.com/ucb/contents/i000815.php
			/*
			q 	文字列の検索式（Googleのウェブ検索などと同様、「"」、「|」、「-」などのオペレータが使用可能です）
max-results 	最大取得件数（省略時：25件）
start-index 	取得開始エントリーの索引番号（省略時：1）
orderby 	エントリーの並び順（省略時：更新日時順|starttime：開始日時順）
start-min 	最も古いイベントの開始日時（省略時：1970-01-01）
start-max 	最も新しいイベントの終了日時（省略時：2031-01-01）
updated-min 	最も古いエントリーの更新日時
updated-max 	最も新しいエントリーの更新日時
author 	エントリーのauthor/name要素またはauthor/email要素（完全一致）
*/
			if(paras.length > 0){
				ep = ep + "?" + paras.join("&");
			}
			trace(ep);
			
			
			var req:URLRequest = new URLRequest();
			//req.url = "http://www.blogger.com/feeds/" + this.id + "/posts/default";
			req.url = ep;
			req.method = URLRequestMethod.GET;
			loader.load(req);
		}
		
		private function onRequestAllPost(e:Event):void{
			var loader:URLLoader = e.currentTarget as URLLoader;
			loader.removeEventListener(Event.COMPLETE, this.onRequestAllPost);
			
			trace(XML(loader.data));
		}
		
		/**
		 * 長いBlogIDから、問い合わせに利用するＩＤを得る
		 **/
		private function getIdFromFullId(fullId:String):String{
			var t:Array = fullId.split(".blog-");
			return String(t[1]);
		}
		
		public function toString():String{
			return title + " by " + this.author.name + "(" + this.author.userID + ")\n" + 
					"\tid:" + this.id + "\n" + 
					"\tsummary:" + this.summary + "\n" + 
					"\tpublished:" + this.updated + "\n" + 
					"\tupdated:" + this.updated;
		}

	}
}